/* **********************************************************************************
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* **********************************************************************************/

using System;
using System.Collections.Generic;
using System.Text;

namespace OfficeOpenXMLInterop
{
    #region Simple Types

    /// <summary>
    /// Scheme color
    /// </summary>
    [Serializable]
    public enum ST_SchemeColorVal
    {
        // The following enum values are used as exact positions in an item list of choices
        //  in a combo box control.  For example, phClr corresponds to the first in the list, and
        //  dk1 to the fourth in the list.  Used this way to sync the enum with the test in
        //  a combo box listing these elements
        phClr = 0,
        dk1 = 3,
        lt1 = 4,
        dk2 = 5,
        lt2 = 6,
        accent1 = 7,
        accent2 = 8,
        accent3 = 9,
        accent4 = 10,
        accent5 = 11,
        accent6 = 12,
        hlink = 13,
        folHlink = 14,
        bg1,    // not used
        tx1,    // not used
        bg2,    // not used
        tx2,    // not used
    }

    /// <summary>
    /// System color value
    /// </summary>
    [Serializable]
    public enum ST_SystemColorVal
    {
        scrollBar,                                      // scroll bar system color
        background,                                     // background system color
        activeCaption,                                  // active caption system color
        inactiveCaption,                                // inactive caption system color
        menu,                                           // menu system color
        window,                                         // window system color
        windowFrame,                                    // window frame system color
        menuText,                                       // menu text system color
        windowText,                                     // window text system color
        captionText,                                    // caption text system color
        activeBorder,                                   // active border system color
        inactiveBorder,                                 // inactive border system color
        appWorkspace,                                   // application workspace system color
        highlight,                                      // highlight system color
        highlightText,                                  // highlight text system color
        btnFace,                                        // button face system color
        btnShadow,                                      // button shadow system color
        grayText,                                       // gray text system color
        btnText,                                        // button text system color
        inactiveCaptionText,                            // inactive caption text system color
        btnHighlight,                                   // button highlight system color
        [System.Xml.Serialization.XmlEnumAttribute("3dDkShadow")]
        Three_DDkShadow,                                // 3D dark system color
        [System.Xml.Serialization.XmlEnumAttribute("3dLight")]
        Three_DLight,                                   // 3D light system color
        infoText,                                       // info text system color
        infoBk,                                         // info back system color
        hotLight,                                       // hot light system color
        gradientActiveCaption,                          // gradient active caption system color
        gradientInactiveCaption,                        // gradient inactive caption system color
        menuHighlight,                                  // menu highlight system color
        menuBar,                                        // menu bar system color
    }

    /// <summary>
    /// Preset colors
    /// </summary>
    [Serializable]
    public enum ST_PresetColorVal
    {
        aliceBlue,
        antiqueWhite,
        aqua,
        aquamarine,
        azure,
        beige,
        bisque,
        black,
        blanchedAlmond,
        blue,
        blueViolet,
        brown,
        burlyWood,
        cadetBlue,
        chartreuse,
        chocolate,
        coral,
        cornflowerBlue,
        cornsilk,
        crimson,
        cyan,
        dkBlue,
        dkCyan,
        dkGoldenrod,
        dkGray,
        dkGreen,
        dkKhaki,
        dkMagenta,
        dkOliveGreen,
        dkOrange,
        dkOrchid,
        dkRed,
        dkSalmon,
        dkSeaGreen,
        dkSlateBlue,
        dkSlateGray,
        dkTurquoise,
        dkViolet,
        deepPink,
        deepSkyBlue,
        dimGray,
        dodgerBlue,
        firebrick,
        floralWhite,
        forestGreen,
        fuchsia,
        gainsboro,
        ghostWhite,
        gold,
        goldenrod,
        gray,
        green,
        greenYellow,
        honeydew,
        hotPink,
        indianRed,
        indigo,
        ivory,
        khaki,
        lavender,
        lavenderBlush,
        lawnGreen,
        lemonChiffon,
        ltBlue,
        ltCoral,
        ltCyan,
        ltGoldenrodYellow,
        ltGray,
        ltGreen,
        ltPink,
        ltSalmon,
        ltSeaGreen,
        ltSkyBlue,
        ltSlateGray,
        ltSteelBlue,
        ltYellow,
        lime,
        limeGreen,
        linen,
        magenta,
        maroon,
        medAquamarine,
        medBlue,
        medOrchid,
        medPurple,
        medSeaGreen,
        medSlateBlue,
        medSpringGreen,
        medTurquoise,
        medVioletRed,
        midnightBlue,
        mintCream,
        mistyRose,
        moccasin,
        navajoWhite,
        navy,
        oldLace,
        olive,
        oliveDrab,
        orange,
        orangeRed,
        orchid,
        paleGoldenrod,
        paleGreen,
        paleTurquoise,
        paleVioletRed,
        papayaWhip,
        peachPuff,
        peru,
        pink,
        plum,
        powderBlue,
        purple,
        red,
        rosyBrown,
        royalBlue,
        saddleBrown,
        salmon,
        sandyBrown,
        seaGreen,
        seaShell,
        sienna,
        silver,
        skyBlue,
        slateBlue,
        slateGray,
        snow,
        springGreen,
        steelBlue,
        tan,
        teal,
        thistle,
        tomato,
        transparent,
        turquoise,
        violet,
        wheat,
        white,
        whiteSmoke,
        yellow,
        yellowGreen,
    }

    /// <summary>
    /// Rectangle alignments
    /// </summary>
    [Serializable]
    public enum ST_RectAlignment
    {
        tl,                                             // top left
        t,                                              // top
        tr,                                             // top right
        l,                                              // left
        ctr,                                            // center
        r,                                              // right
        bl,                                             // bottom left
        b,                                              // bottom
        br,                                             // bottom right
    }

    /// <summary>
    /// Black and White mode
    /// </summary>
    [Serializable]
    public enum ST_BlackWhiteMode
    {
        clr,                                            // color
        auto,                                           // automatic
        gray,                                           // gray
        ltGray,                                         // light gray
        invGray,                                        // inverse gray
        grayWhite,                                      // gray and white
        blackGray,                                      // black and gray
        blackWhite,                                     // black and white
        black,                                          // black
        white,                                          // white
        hidden,                                         // hidden
    }


    #endregion

    #region Complex Types

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_EmbeddedWAVAudioFile
    {
        // TODO:  implement this functionality
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Hyperlink
    {
        public CT_Hyperlink()
        {
            this.tgtFrame = "";
            this.tooltip = "";
            this.history = true;
            this.highlightClick = false;
            this.endSnd = false;
        }

        // hyperlink sound
        public CT_EmbeddedWAVAudioFile snd;

        // hyperlink target
        [System.Xml.Serialization.XmlAttributeAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://oRelsSchemaUri")]
        public string id;

        // invalid url
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute("")]
        public string invalidUrl;

        // action setting
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute("")]
        public string action;

        // target frame
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute("")]
        public string tgtFrame;

        // tooltip
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute("")]
        public string tooltip;

        // add hyperlink to page history
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(true)]
        public bool history;

        // highlight click
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(true)]
        public bool highlightClick;

        // end sounds
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(true)]
        public bool endSnd;
    }

    /// <summary>
    /// Relative rectangle
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_RelativeRect
    {
        public CT_RelativeRect()
        {
            this.l = 0;
            this.t = 0;
            this.r = 0;
            this.b = 0;
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(0)]
        public int l;                                   // left offset

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(0)]
        public int t;                                   // top offset

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(0)]
        public int r;                                   // right offset

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(0)]
        public int b;                                   // bottom offset
    }

    /// <summary>
    /// 3-D vector
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Vector3D
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long dx;                                 // distance along x-axis

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long dy;                                 // distance along y-axis

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long dz;                                 // distance along z-axis
    }

    /// <summary>
    /// Point in 3-D space
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Point3D
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long x;                                  // x-coordinate

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long y;                                  // y-coordinate

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long z;                                  // z-coordinate
    }

    /// <summary>
    /// Spherical coordinate
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_SphereCoords
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int lat;                                 // latitude

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int lon;                                 // longitude

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int rev;                                 // revolution
    }

    /// <summary>
    /// Point in 2-D space
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Point2D
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long x;                                  // x-coordinate

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long y;                                  // y-coordinate
    }

    /// <summary>
    /// Positive size (2-D space)
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_PositiveSize2D
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long cx;                                 // extent lenght

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public long cy;                                 // extent width
    }

    /// <summary>
    /// 2-D transformation
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Transform2D
    {
        public CT_Transform2D()
        {
            this.rot = 0;
            this.flipH = false;
            this.flipV = false;
        }

        public CT_Point2D off;                          // offset

        public CT_PositiveSize2D ext;                   // extents

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(0)]
        public int rot;                                 // rotation

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(false)]
        public bool flipH;                              // horizontal flip

        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(false)]
        public bool flipV;                              // vertical flip
    }

    /// <summary>
    /// Color
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Color
    {
        private CT_SchemeColor _schemeClr;
        private CT_ScRgbColor _scrgbClr;
        private CT_SRgbColor _srgbClr;
        private CT_HslColor _hslClr;
        private CT_SystemColor _sysClr;
        private CT_PresetColor _prstClr;

        // Clears out any currently set color and sets the new color value apropriately
        private void SetValue(object color)
        {
            // Clear all the values
            this._schemeClr = null;
            this._scrgbClr = null;
            this._srgbClr = null;
            this._hslClr = null;
            this._sysClr = null;
            this._prstClr = null;

            // Set the new incoming value
            if (color.GetType() == typeof(CT_SchemeColor))
            {
                this._schemeClr = (CT_SchemeColor)color;
            }
            else if (color.GetType() == typeof(CT_ScRgbColor))
            {
                this._scrgbClr = (CT_ScRgbColor)color;
            }
            else if (color.GetType() == typeof(CT_SRgbColor))
            {
                this._srgbClr = (CT_SRgbColor)color;
            }
            else if (color.GetType() == typeof(CT_HslColor))
            {
                this._hslClr = (CT_HslColor)color;
            }
            else if (color.GetType() == typeof(CT_SystemColor))
            {
                this._sysClr = (CT_SystemColor)color;
            }
            else if (color.GetType() == typeof(CT_PresetColor))
            {
                this._prstClr = (CT_PresetColor)color;
            }
        }

        public CT_SchemeColor schemeClr
        {
            get { return this._schemeClr; }
            set { this.SetValue(value); }
        }

        public CT_ScRgbColor scrgbClr
        {
            get { return this._scrgbClr; }
            set { this.SetValue(value); }
        }

        public CT_SRgbColor srgbClr
        {
            get { return this._srgbClr; }
            set { this.SetValue(value); }
        }

        public CT_HslColor hslClr
        {
            get { return this._hslClr; }
            set { this.SetValue(value); }
        }

        public CT_SystemColor sysClr
        {
            get { return this._sysClr; }
            set { this.SetValue(value); }
        }

        public CT_PresetColor prstClr
        {
            get { return this._prstClr; }
            set { this.SetValue(value); }
        }
    }

    /// <summary>
    /// posative percentage
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_PositiveFixedPercentage
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int val;                                 // value
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_ComplementTransform
    {
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_InverseTransform
    {
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_GrayscaleTransform
    {
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_GammaTransform
    {
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_InverseGammaTransform
    {
    }

    /// <summary>
    /// Angle
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Angle
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int val;                                 // value
    }

    /// <summary>
    /// Positive fixed angle
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_PositiveFixedAngle
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int val;                                 // value
    }

    /// <summary>
    /// Percentage
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_Percentage
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int val;                                 // value
    }

    /// <summary>
    /// Positive percentage (min value 0 inclusive)
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_PositivePercentage
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int val;                                 // value
    }

    /// <summary>
    /// Fixed percentage (between -100000 & 100000 inclusive)
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_FixedPercentage
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int val;                                 // value
    }

    /// <summary>
    /// Preset color
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_PresetColor
    {
        [System.Xml.Serialization.XmlElementAttribute("tint")]
        public CT_PositiveFixedPercentage tint;         // tint

        [System.Xml.Serialization.XmlElementAttribute("shade")]
        public CT_PositiveFixedPercentage shade;        // shade

        [System.Xml.Serialization.XmlElementAttribute("comp")]
        public CT_ComplementTransform comp;             // complement

        [System.Xml.Serialization.XmlElementAttribute("inv")]
        public CT_InverseTransform inv;                 // inverse

        [System.Xml.Serialization.XmlElementAttribute("gray")]
        public CT_GrayscaleTransform gray;              // grayscale

        [System.Xml.Serialization.XmlElementAttribute("alpha")]
        public CT_PositiveFixedPercentage alpha;        // alpha

        [System.Xml.Serialization.XmlElementAttribute("alphaOff")]
        public CT_FixedPercentage alphaOff;             // alpha offset

        [System.Xml.Serialization.XmlElementAttribute("alphaMod")]
        public CT_PositivePercentage alphaMod;          // alpha modulation

        [System.Xml.Serialization.XmlElementAttribute("hue")]
        public CT_PositiveFixedAngle hue;               // hue

        [System.Xml.Serialization.XmlElementAttribute("hueOff")]
        public CT_Angle hueOff;                         // hue offset

        [System.Xml.Serialization.XmlElementAttribute("hueMod")]
        public CT_PositivePercentage hueMod;            // hue modulation

        [System.Xml.Serialization.XmlElementAttribute("sat")]
        public CT_Percentage sat;                       // saturation

        [System.Xml.Serialization.XmlElementAttribute("satOff")]
        public CT_Percentage satOff;                    // saturation offset

        [System.Xml.Serialization.XmlElementAttribute("satMod")]
        public CT_Percentage satMod;                    // saturation modification

        [System.Xml.Serialization.XmlElementAttribute("lum")]
        public CT_Percentage lum;                       // luminance

        [System.Xml.Serialization.XmlElementAttribute("lumOff")]
        public CT_Percentage lumOff;                    // luminance offset

        [System.Xml.Serialization.XmlElementAttribute("lumMod")]
        public CT_Percentage lumMod;                    // luminance modification

        [System.Xml.Serialization.XmlElementAttribute("red")]
        public CT_Percentage red;                       // red

        [System.Xml.Serialization.XmlElementAttribute("redOff")]
        public CT_Percentage redOff;                    // red offset

        [System.Xml.Serialization.XmlElementAttribute("redMod")]
        public CT_Percentage redMod;                    // red modification

        [System.Xml.Serialization.XmlElementAttribute("green")]
        public CT_Percentage green;                     // green

        [System.Xml.Serialization.XmlElementAttribute("greenOff")]
        public CT_Percentage greenOff;                  // green offset

        [System.Xml.Serialization.XmlElementAttribute("greenMod")]
        public CT_Percentage greenMod;                  // green modification

        [System.Xml.Serialization.XmlElementAttribute("blue")]
        public CT_Percentage blue;                      // blue

        [System.Xml.Serialization.XmlElementAttribute("blueOff")]
        public CT_Percentage blueOff;                   // blue offset

        [System.Xml.Serialization.XmlElementAttribute("blueMod")]
        public CT_Percentage blueMod;                   // blue modification

        [System.Xml.Serialization.XmlElementAttribute("gamma")]
        public CT_GammaTransform gamma;                 // gamma

        [System.Xml.Serialization.XmlElementAttribute("invGamma")]
        public CT_InverseGammaTransform invGamma;       // invserse gamma

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ST_PresetColorVal val;                   // value
    }

    /// <summary>
    /// Scheme color
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_SchemeColor
    {
        [System.Xml.Serialization.XmlElementAttribute("tint")]
        public CT_PositiveFixedPercentage tint;
        [System.Xml.Serialization.XmlElementAttribute("shade")]
        public CT_PositiveFixedPercentage shade;
        [System.Xml.Serialization.XmlElementAttribute("comp")]
        public CT_ComplementTransform comp;
        [System.Xml.Serialization.XmlElementAttribute("inv")]
        public CT_InverseTransform inv;
        [System.Xml.Serialization.XmlElementAttribute("gray")]
        public CT_GrayscaleTransform gray;
        [System.Xml.Serialization.XmlElementAttribute("alpha")]
        public CT_PositiveFixedPercentage alpha;
        [System.Xml.Serialization.XmlElementAttribute("alphaOff")]
        public CT_FixedPercentage alphaOff;
        [System.Xml.Serialization.XmlElementAttribute("alphaMod")]
        public CT_PositivePercentage alphaMod;
        [System.Xml.Serialization.XmlElementAttribute("hue")]
        public CT_PositiveFixedAngle hue;
        [System.Xml.Serialization.XmlElementAttribute("hueOff")]
        public CT_Angle hueOff;
        [System.Xml.Serialization.XmlElementAttribute("hueMod")]
        public CT_PositivePercentage hueMod;
        [System.Xml.Serialization.XmlElementAttribute("sat")]
        public CT_Percentage sat;
        [System.Xml.Serialization.XmlElementAttribute("satOff")]
        public CT_Percentage satOff;
        [System.Xml.Serialization.XmlElementAttribute("satMod")]
        public CT_Percentage satMod;
        [System.Xml.Serialization.XmlElementAttribute("lum")]
        public CT_Percentage lum;
        [System.Xml.Serialization.XmlElementAttribute("lumOff")]
        public CT_Percentage lumOff;
        [System.Xml.Serialization.XmlElementAttribute("lumMod")]
        public CT_Percentage lumMod;
        [System.Xml.Serialization.XmlElementAttribute("red")]
        public CT_Percentage red;
        [System.Xml.Serialization.XmlElementAttribute("redOff")]
        public CT_Percentage redOff;
        [System.Xml.Serialization.XmlElementAttribute("redMod")]
        public CT_Percentage redMod;
        [System.Xml.Serialization.XmlElementAttribute("green")]
        public CT_Percentage green;
        [System.Xml.Serialization.XmlElementAttribute("greenOff")]
        public CT_Percentage greenOff;
        [System.Xml.Serialization.XmlElementAttribute("greenMod")]
        public CT_Percentage greenMod;
        [System.Xml.Serialization.XmlElementAttribute("blue")]
        public CT_Percentage blue;
        [System.Xml.Serialization.XmlElementAttribute("blueOff")]
        public CT_Percentage blueOff;
        [System.Xml.Serialization.XmlElementAttribute("blueMod")]
        public CT_Percentage blueMod;
        [System.Xml.Serialization.XmlElementAttribute("gamma")]
        public CT_GammaTransform gamma;
        [System.Xml.Serialization.XmlElementAttribute("invGamma")]
        public CT_InverseGammaTransform invGamma;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ST_SchemeColorVal val;
    }

    /// <summary>
    /// System color
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_SystemColor
    {
        [System.Xml.Serialization.XmlElementAttribute("tint")]
        public CT_PositiveFixedPercentage tint;
        [System.Xml.Serialization.XmlElementAttribute("shade")]
        public CT_PositiveFixedPercentage shade;
        [System.Xml.Serialization.XmlElementAttribute("comp")]
        public CT_ComplementTransform comp;
        [System.Xml.Serialization.XmlElementAttribute("inv")]
        public CT_InverseTransform inv;
        [System.Xml.Serialization.XmlElementAttribute("gray")]
        public CT_GrayscaleTransform gray;
        [System.Xml.Serialization.XmlElementAttribute("alpha")]
        public CT_PositiveFixedPercentage alpha;
        [System.Xml.Serialization.XmlElementAttribute("alphaOff")]
        public CT_FixedPercentage alphaOff;
        [System.Xml.Serialization.XmlElementAttribute("alphaMod")]
        public CT_PositivePercentage alphaMod;
        [System.Xml.Serialization.XmlElementAttribute("hue")]
        public CT_PositiveFixedAngle hue;
        [System.Xml.Serialization.XmlElementAttribute("hueOff")]
        public CT_Angle hueOff;
        [System.Xml.Serialization.XmlElementAttribute("hueMod")]
        public CT_PositivePercentage hueMod;
        [System.Xml.Serialization.XmlElementAttribute("sat")]
        public CT_Percentage sat;
        [System.Xml.Serialization.XmlElementAttribute("satOff")]
        public CT_Percentage satOff;
        [System.Xml.Serialization.XmlElementAttribute("satMod")]
        public CT_Percentage satMod;
        [System.Xml.Serialization.XmlElementAttribute("lum")]
        public CT_Percentage lum;
        [System.Xml.Serialization.XmlElementAttribute("lumOff")]
        public CT_Percentage lumOff;
        [System.Xml.Serialization.XmlElementAttribute("lumMod")]
        public CT_Percentage lumMod;
        [System.Xml.Serialization.XmlElementAttribute("red")]
        public CT_Percentage red;
        [System.Xml.Serialization.XmlElementAttribute("redOff")]
        public CT_Percentage redOff;
        [System.Xml.Serialization.XmlElementAttribute("redMod")]
        public CT_Percentage redMod;
        [System.Xml.Serialization.XmlElementAttribute("green")]
        public CT_Percentage green;
        [System.Xml.Serialization.XmlElementAttribute("greenOff")]
        public CT_Percentage greenOff;
        [System.Xml.Serialization.XmlElementAttribute("greenMod")]
        public CT_Percentage greenMod;
        [System.Xml.Serialization.XmlElementAttribute("blue")]
        public CT_Percentage blue;
        [System.Xml.Serialization.XmlElementAttribute("blueOff")]
        public CT_Percentage blueOff;
        [System.Xml.Serialization.XmlElementAttribute("blueMod")]
        public CT_Percentage blueMod;
        [System.Xml.Serialization.XmlElementAttribute("gamma")]
        public CT_GammaTransform gamma;
        [System.Xml.Serialization.XmlElementAttribute("invGamma")]
        public CT_InverseGammaTransform invGamma;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ST_SystemColorVal val;
        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "hexBinary")]
        public byte[] lastClr;
    }

    /// <summary>
    /// HSL color
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_HslColor
    {
        [System.Xml.Serialization.XmlElementAttribute("tint")]
        public CT_PositiveFixedPercentage tint;
        [System.Xml.Serialization.XmlElementAttribute("shade")]
        public CT_PositiveFixedPercentage shade;
        [System.Xml.Serialization.XmlElementAttribute("comp")]
        public CT_ComplementTransform comp;
        [System.Xml.Serialization.XmlElementAttribute("inv")]
        public CT_InverseTransform inv;
        [System.Xml.Serialization.XmlElementAttribute("gray")]
        public CT_GrayscaleTransform gray;
        [System.Xml.Serialization.XmlElementAttribute("alpha")]
        public CT_PositiveFixedPercentage alpha;
        [System.Xml.Serialization.XmlElementAttribute("alphaOff")]
        public CT_FixedPercentage alphaOff;
        [System.Xml.Serialization.XmlElementAttribute("alphaMod")]
        public CT_PositivePercentage alphaMod;
        [System.Xml.Serialization.XmlElementAttribute("hue")]
        public CT_PositiveFixedAngle hue;
        [System.Xml.Serialization.XmlElementAttribute("hueOff")]
        public CT_Angle hueOff;
        [System.Xml.Serialization.XmlElementAttribute("hueMod")]
        public CT_PositivePercentage hueMod;
        [System.Xml.Serialization.XmlElementAttribute("sat")]
        public CT_Percentage sat;
        [System.Xml.Serialization.XmlElementAttribute("satOff")]
        public CT_Percentage satOff;
        [System.Xml.Serialization.XmlElementAttribute("satMod")]
        public CT_Percentage satMod;
        [System.Xml.Serialization.XmlElementAttribute("lum")]
        public CT_Percentage lum;
        [System.Xml.Serialization.XmlElementAttribute("lumOff")]
        public CT_Percentage lumOff;
        [System.Xml.Serialization.XmlElementAttribute("lumMod")]
        public CT_Percentage lumMod;
        [System.Xml.Serialization.XmlElementAttribute("red")]
        public CT_Percentage red;
        [System.Xml.Serialization.XmlElementAttribute("redOff")]
        public CT_Percentage redOff;
        [System.Xml.Serialization.XmlElementAttribute("redMod")]
        public CT_Percentage redMod;
        [System.Xml.Serialization.XmlElementAttribute("green")]
        public CT_Percentage green;
        [System.Xml.Serialization.XmlElementAttribute("greenOff")]
        public CT_Percentage greenOff;
        [System.Xml.Serialization.XmlElementAttribute("greenMod")]
        public CT_Percentage greenMod;
        [System.Xml.Serialization.XmlElementAttribute("blue")]
        public CT_Percentage blue;
        [System.Xml.Serialization.XmlElementAttribute("blueOff")]
        public CT_Percentage blueOff;
        [System.Xml.Serialization.XmlElementAttribute("blueMod")]
        public CT_Percentage blueMod;
        [System.Xml.Serialization.XmlElementAttribute("gamma")]
        public CT_GammaTransform gamma;
        [System.Xml.Serialization.XmlElementAttribute("invGamma")]
        public CT_InverseGammaTransform invGamma;
        [System.Xml.Serialization.XmlAttributeAttribute("hue")]
        public int hue1;
        [System.Xml.Serialization.XmlAttributeAttribute("sat")]
        public int sat1;
        [System.Xml.Serialization.XmlAttributeAttribute("lum")]
        public int lum1;
    }

    /// <summary>
    /// sRGB color
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_SRgbColor
    {
        [System.Xml.Serialization.XmlElementAttribute("tint")]
        public CT_PositiveFixedPercentage tint;
        [System.Xml.Serialization.XmlElementAttribute("shade")]
        public CT_PositiveFixedPercentage shade;
        [System.Xml.Serialization.XmlElementAttribute("comp")]
        public CT_ComplementTransform comp;
        [System.Xml.Serialization.XmlElementAttribute("inv")]
        public CT_InverseTransform inv;
        [System.Xml.Serialization.XmlElementAttribute("gray")]
        public CT_GrayscaleTransform gray;
        [System.Xml.Serialization.XmlElementAttribute("alpha")]
        public CT_PositiveFixedPercentage alpha;
        [System.Xml.Serialization.XmlElementAttribute("alphaOff")]
        public CT_FixedPercentage alphaOff;
        [System.Xml.Serialization.XmlElementAttribute("alphaMod")]
        public CT_PositivePercentage alphaMod;
        [System.Xml.Serialization.XmlElementAttribute("hue")]
        public CT_PositiveFixedAngle hue;
        [System.Xml.Serialization.XmlElementAttribute("hueOff")]
        public CT_Angle hueOff;
        [System.Xml.Serialization.XmlElementAttribute("hueMod")]
        public CT_PositivePercentage hueMod;
        [System.Xml.Serialization.XmlElementAttribute("sat")]
        public CT_Percentage sat;
        [System.Xml.Serialization.XmlElementAttribute("satOff")]
        public CT_Percentage satOff;
        [System.Xml.Serialization.XmlElementAttribute("satMod")]
        public CT_Percentage satMod;
        [System.Xml.Serialization.XmlElementAttribute("lum")]
        public CT_Percentage lum;
        [System.Xml.Serialization.XmlElementAttribute("lumOff")]
        public CT_Percentage lumOff;
        [System.Xml.Serialization.XmlElementAttribute("lumMod")]
        public CT_Percentage lumMod;
        [System.Xml.Serialization.XmlElementAttribute("red")]
        public CT_Percentage red;
        [System.Xml.Serialization.XmlElementAttribute("redOff")]
        public CT_Percentage redOff;
        [System.Xml.Serialization.XmlElementAttribute("redMod")]
        public CT_Percentage redMod;
        [System.Xml.Serialization.XmlElementAttribute("green")]
        public CT_Percentage green;
        [System.Xml.Serialization.XmlElementAttribute("greenOff")]
        public CT_Percentage greenOff;
        [System.Xml.Serialization.XmlElementAttribute("greenMod")]
        public CT_Percentage greenMod;
        [System.Xml.Serialization.XmlElementAttribute("blue")]
        public CT_Percentage blue;
        [System.Xml.Serialization.XmlElementAttribute("blueOff")]
        public CT_Percentage blueOff;
        [System.Xml.Serialization.XmlElementAttribute("blueMod")]
        public CT_Percentage blueMod;
        [System.Xml.Serialization.XmlElementAttribute("gamma")]
        public CT_GammaTransform gamma;
        [System.Xml.Serialization.XmlElementAttribute("invGamma")]
        public CT_InverseGammaTransform invGamma;
        [System.Xml.Serialization.XmlAttributeAttribute(DataType = "hexBinary")]
        public byte[] val;
    }

    /// <summary>
    /// scRGB color
    /// </summary>
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_ScRgbColor
    {
        [System.Xml.Serialization.XmlElementAttribute("tint")]
        public CT_PositiveFixedPercentage tint;
        [System.Xml.Serialization.XmlElementAttribute("shade")]
        public CT_PositiveFixedPercentage shade;
        [System.Xml.Serialization.XmlElementAttribute("comp")]
        public CT_ComplementTransform comp;
        [System.Xml.Serialization.XmlElementAttribute("inv")]
        public CT_InverseTransform inv;
        [System.Xml.Serialization.XmlElementAttribute("gray")]
        public CT_GrayscaleTransform gray;
        [System.Xml.Serialization.XmlElementAttribute("alpha")]
        public CT_PositiveFixedPercentage alpha;
        [System.Xml.Serialization.XmlElementAttribute("alphaOff")]
        public CT_FixedPercentage alphaOff;
        [System.Xml.Serialization.XmlElementAttribute("alphaMod")]
        public CT_PositivePercentage alphaMod;
        [System.Xml.Serialization.XmlElementAttribute("hue")]
        public CT_PositiveFixedAngle hue;
        [System.Xml.Serialization.XmlElementAttribute("hueOff")]
        public CT_Angle hueOff;
        [System.Xml.Serialization.XmlElementAttribute("hueMod")]
        public CT_PositivePercentage hueMod;
        [System.Xml.Serialization.XmlElementAttribute("sat")]
        public CT_Percentage sat;
        [System.Xml.Serialization.XmlElementAttribute("satOff")]
        public CT_Percentage satOff;
        [System.Xml.Serialization.XmlElementAttribute("satMod")]
        public CT_Percentage satMod;
        [System.Xml.Serialization.XmlElementAttribute("lum")]
        public CT_Percentage lum;
        [System.Xml.Serialization.XmlElementAttribute("lumOff")]
        public CT_Percentage lumOff;
        [System.Xml.Serialization.XmlElementAttribute("lumMod")]
        public CT_Percentage lumMod;
        [System.Xml.Serialization.XmlElementAttribute("red")]
        public CT_Percentage red;
        [System.Xml.Serialization.XmlElementAttribute("redOff")]
        public CT_Percentage redOff;
        [System.Xml.Serialization.XmlElementAttribute("redMod")]
        public CT_Percentage redMod;
        [System.Xml.Serialization.XmlElementAttribute("green")]
        public CT_Percentage green;
        [System.Xml.Serialization.XmlElementAttribute("greenOff")]
        public CT_Percentage greenOff;
        [System.Xml.Serialization.XmlElementAttribute("greenMod")]
        public CT_Percentage greenMod;
        [System.Xml.Serialization.XmlElementAttribute("blue")]
        public CT_Percentage blue;
        [System.Xml.Serialization.XmlElementAttribute("blueOff")]
        public CT_Percentage blueOff;
        [System.Xml.Serialization.XmlElementAttribute("blueMod")]
        public CT_Percentage blueMod;
        [System.Xml.Serialization.XmlElementAttribute("gamma")]
        public CT_GammaTransform gamma;
        [System.Xml.Serialization.XmlElementAttribute("invGamma")]
        public CT_InverseGammaTransform invGamma;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int r;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int g;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int b;
    }

    #endregion
}
